A system-on-chip (SoC) is a computer system implemented in a single integrated circuit. An SoC may comprise various functional units such as a central processing unit (CPU), memory units, digital signal processors, or other integrated peripherals. The various functional units may be interconnected by suitable signal lines, e.g., by a data bus that may be shared among the functional units. A functional unit may be arranged to send data to another unit of the same system-on-chip. A functional unit that sends data and a functional unit that receives data may be referred to as a sender unit, or sender, and as a receiver unit, or receiver, respectively. A functional unit may be a hardware component or a software component of the SoC, or a combination of hardware and software. For example, two program instances running on a processor unit of the SoC may be considered distinct functional units.
A sender unit may be arranged to send data to a receiver unit in the form of successive data packets. A data packet is a bit sequence, that is a sequence of bits, that has a finite length. A data packet may comprise payload data and metadata. Payload data may be viewed as the content of a data packet while metadata may comprise additional information that is added to the payload data for technical purposes. For example, metadata may specify one or more functional units as the intended receiver units of the data packet, for routing the data packet to the intended receiver units.
Metadata may also comprise information for enabling the receiver unit to verify that it has received the payload data correctly. For instance, the metadata may comprise a cyclic redundancy check (CRC) sum computed by the sender unit on the basis of the payload data prior to sending the data packet. A sender unit may be arranged to re-compute the CRC sum on the basis of the received payload data and compare it to the CRC sum contained in the metadata of the respective data packet. A mismatch between the original CRC sum and the recomputed CRC sum may indicate that the received payload data differs from the sent payload data. Metadata may also comprise, for example, a number of the respective data packet. More specifically, a sender unit may be arranged to number the data packets which it is about to send in accordance with a certain scheme, e.g., consecutively, and to include the thus determined number of a data packet in the metadata of the respective data packet. A receiver unit may thus be enabled to verify whether it has received all data packets of a given sequence of data packets and whether it received the data packets in the correct order. Consecutive numbering of messages is implemented, for example, in the PROFIsafe system described in “PROFIsafe System Description, Technology and Application”. A drawback of consecutive numbering may, however, be that the consecutive number included in each data packet may contribute to the total amount of data that is sent to the receiver unit, possibly requiring a higher data rate or bandwidth of the data link between the receiver unit and the sender unit.